
'''
任务：给一个空房子 ，添加家具

要求
房子类有 ：户型、面积属性  方法:添加家具
家具类 ： 家具的名字，占地面积

房子 是空房子，添加家具的时候 会减少房子的剩余的面积
如果剩余面积小于要添加的家具面积，则不能再去添加家具了
每次添加家具的时候，都打印一些必要的信息，户型，面积，剩余面积，添加的家具


'''

class House():
    '''
    房子类
    '''
    def __init__(self,type,area):
        '''

        :param type:
        :param residual_area:  剩余面积
        '''
        self.type = type
        self.area = area
        self.residual_area = area
        self.jiaju_list = []
    def __str__(self):
        '''
        在打印实例对象的时候，会自动调用这个方法，它可以被重写，必须返回一个字符串
        :return: <__main__.House object at 0x0000026647517580>
        '''
        return f'这是一个{self.type}房子，总面积是{self.area}平米'
    def add_item(self,item):
        '''
        给房子添加家具的方法
        :return:
        '''
        #判断房子剩余面积如果大于家具的占地面积，才能添加
        if self.residual_area >= item.area:
            #添加家具后把房子剩余面积减去家具占地面积
            self.residual_area -= item.area
            # 把家具添加到家具列表里
            self.jiaju_list.append(item.name)
            print(self)
            print('添加了',item)
            print(f'现在房子里有{self.jiaju_list}')
            print(f'剩余面积为：{self.residual_area}平米')
        else:
            print(f'{item.name}占地太大了，房子放不下了~~')
class Jiaju():
    '''
    家具类
    '''
    def __init__(self,name,area):
        self.name = name
        self.area = area

    def __str__(self):
        return  f'一个{self.name},占地面积为{self.area}平米'
small_house = House('一室一厅',40)

# big_hose = House('大别墅',400)
# print(big_hose)

table = Jiaju('餐桌',2)
sofa = Jiaju('真皮大沙发',4)
bed = Jiaju('超级大床',40)
#给房子添加一个餐桌
small_house.add_item(table)
small_house.add_item(sofa)
small_house.add_item(bed)
print (House.__doc__)
print (help (House))
